home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 5
/
Gekikoh Dennoh Club Vol. 5 (Japan).7z
/
Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin
/
internet
/
webx
/
webxp040.lzh
/
Source
/
cut_disp.s
< prev
next >
Wrap
Text File
|
1998-06-17
|
3KB
|
161 lines
* cut_disp.s .CUT âtâ@âCâïôWèJ
*
* âüâéâèÅπé╔é╫é╜ô╟é▌é╡é╜ .CUT âtâ@âCâïé≡ôWèJé╡é▄é╖üB
* line_bytes é═ X68000 é╠ TEXTVRAM é╔ôWèJé╖éΘÅΩìçüA128 é≡ÄwÆΦé╡é─ë║é│éóüB
* ü@ü@üVü@ü@ é╔ 0 é≡ÄwÆΦé╖éΘé╞ô┴ùßé╞é╡é─ line_bytes é≡ .CUT é╠éwâTâCâYé⌐éτ
* ÄZÅoé╡é▄é╖üiühïlé▀é─ühôWèJé╖éΘüjüB
*
* âRü[âï
* move.l #line_bytes,-(sp) * éPâëâCâôé╠âoâCâgÉöüi =0 é╛é╞ïlé▀é─ôWèJüj
* pea.l TEXTVRAM * ôWèJé╖éΘâAâhâîâX
* move.l cut_ptr,-(sp) * âxâ^ô╟é▌é╡é╜ .CUT âtâ@âCâïé╠âAâhâîâX
* jsr _cut_disp
* lea.l 12(sp),sp
* ò╘éΦÆl
* é╚é╡
.xdef _cut_disp
.text
.even
_cut_disp: * .CUT âtâ@âCâïôWèJ
movem.l d1-d7/a0-a6,-(sp)
* üilink û╜ù▀é≡Å╚ù¬é╡é─ê°é½Éöé≡Ä≤é»éΘïZ ü⌐ a6 éαÄgéñé╠é┼üj
movea.l 4+7*4+7*4(sp),a0 * a0.l = âxâ^ô╟é▌é╡é╜.CUT âtâ@âCâïé╠âAâhâîâX
movea.l 8+7*4+7*4(sp),a5 * a5.l = Åæé½ì₧é▐âAâhâîâX
move.l 12+7*4+7*4(sp),d0
bne not_line_bytes_0
* éPâëâCâôé╠âoâCâgÉöé¬éOé╛é┴é╜ÅΩìç
move.w 48(a0),d0 * d0.w = x_size
subq.w #1,d0
lsr.w #3,d0
addq.w #1,d0
not_line_bytes_0:
move.w d0,a6 * a6.w = éPâëâCâôé╠âoâCâgÉö
move.w 48(a0),d0 * d0.w = x_size
subq.w #1,d0
lsr.w #6,d0
addq.w #1,d0
movea.w d0,a1 * a1.w = âtâëâOé╠âoâCâgÉö
move.w 48(a0),d6 * d6.w = x_size
subq.w #1,d6
lsr.w #3,d6 * d6.w = x_loop-1
move.w a6,d4
subq.w #1,d4
sub.w d6,d4 * d4.w = a5.l é╔ë┴ÄZé╖éΘÉö
move.w 50(a0),d7
subq.w #1,d7 * d7.w = y_size-1
lea.l 52(a0),a2 * a2.l = âfü[â^û{æ╠
move.w a6,d0
neg.w d0
movea.w d0,a6 * a6.w = -(éPâëâCâôé╠âoâCâgÉö)
**** ****
* éPö╘Åπé╠âëâCâôé≡ôWèJ
moveq.l #0,d0
move.b (a2)+,d0
lea.l -1(a2,d0.w),a4 * a4.l = ăé╠ a2.l
cmpi.b #1,d0
bne disp_1st_not_fill
* éPâëâCâôé╠æìâoâCâgÉöé¬éPé╛é┴é╜ÅΩìç
move.w d6,d5
disp_1st_fill:
clr.b (a5)+
dbra d5,disp_1st_fill
movea.l a2,a3
bra disp_1st_next
disp_1st_not_fill:
lea.l (a2,a1.w),a3 * a3.l = ö±ê│Åké╠òöò¬é╠ârâbâgâCâüü[âWâfü[â^ù±
move.w d6,d5 * d5.w = x_loop
moveq.l #1,d3 * d3.w = âtâëâOìXÉVâJâEâôâ^
disp_1st_x_loop:
ror.b d3
bcc disp_1st_not_next_flag
move.b (a2)+,d2 * d2.b = âtâëâO
disp_1st_not_next_flag:
add.b d2,d2
bcc disp_1st_flag_0
* âtâëâOé¬éPé╠Ä₧
move.b (a3)+,(a5)+
dbra d5,disp_1st_x_loop
bra disp_1st_next
disp_1st_flag_0: * âtâëâOé¬éOé╠Ä₧
clr.b (a5)+
dbra d5,disp_1st_x_loop
disp_1st_next:
movea.l a4,a2
lea.l (a5,d4.w),a5
subq.w #1,d7
bcs disp_exit
**** ****
disp_y_loop:
moveq.l #0,d0
move.b (a2)+,d0
lea.l -1(a2,d0.w),a4 * a4.l = ăé╠ a2.l
cmpi.b #1,d0
bne disp_not_fill
* éPâëâCâôé╠æìâoâCâgÉöé¬éPé╛é┴é╜ÅΩìç
move.w d6,d5
disp_fill:
move.b (a5,a6.w),(a5)+
dbra d5,disp_fill
movea.l a2,a3
bra disp_y_next
disp_not_fill:
lea.l (a2,a1.w),a3 * a3.l = ö±ê│Åké╠òöò¬é╠ârâbâgâCâüü[âWâfü[â^ù±
move.w d6,d5
moveq.l #1,d3 * d3.w = âtâëâOìXÉVâJâEâôâ^
disp_x_loop:
ror.b d3
bcc disp_not_next_flag
move.b (a2)+,d2 * d2.b = âtâëâO
disp_not_next_flag:
add.b d2,d2
bcc disp_flag_0
* âtâëâOé¬éPé╠Ä₧
move.b (a5,a6.w),d0
move.b (a3)+,d1
eor.b d1,d0
move.b d0,(a5)+
dbra d5,disp_x_loop
bra disp_y_next
disp_flag_0: * âtâëâOé¬éOé╠Ä₧
move.b (a5,a6.w),(a5)+
dbra d5,disp_x_loop
disp_y_next:
movea.l a4,a2
lea.l (a5,d4.w),a5
dbra d7,disp_y_loop
disp_exit:
moveq.l #0,d0
movem.l (sp)+,d1-d7/a0-a6
rts